Function.prototype.myBind=function(){
    let self=this;// 指向要绑定的函数
    let slice=Array.prototype.slice;
    // 获取要绑定的this 指向
    let target=arguments[0]
    // 获取参数,因为arguments 是类数组，不是真正的数组
    let args=slice.call(arguments,1)
    // bind 并不会立即执行函数，而是生成一个函数，因此要返回一个函数
    return function(){
        // 调用这个函数时也会传递参数
        args=args.concat(slice.call(arguments))
        //执行函数，函数可能有返回值，也可能没有返回值
        return self.apply(target,args)
    }
}

Function.prototype.myBind2=function(...args){
    const self=this
    const context=args[0]
    args=args.slice(1)
    return (...args1)=>{
        self.apply(context,[...args,...args1])
    }
}

encodeURI

encodeURIComponent

performance